// 后台管理员登录模块
const express = require('express');
const router = express.Router();
// 导入数据库模块
const db = require('../../db/index');
// 导入AES加密解密模块
const { setPassword, getPassword } = require('../../lib/tools');

// 1. 导入 @escook/express-joi
const expressJoi = require('@escook/express-joi');

//2.导入验证规则
const { login_schema } = require('../../schema/login');

// 登录模块展示
router.get('/', (req, res) => {
  res.render('admin/login');
});
// 登录路由
router.post('/', (req, res) => {
  // res.render('')
  // console.log(req.body);//{ username: 'admin', password: '123456' }
  // 得到前台发来的数据 在req.body中
  // 解构赋值得到从前台传来的用户名和密码
  const { username, password } = req.body;
  // 后台对前台发送来的数据进行校验

  // 查询数据库
  // 定义查询语句
  var sql = 'select username,password from administrator where username=?';
  db.query(sql, [username], (err, results) => {
    if (err) {
      // 数据库查询失败
      return res.send({
        code: 0,
        msg: err.message,
      });
    }
    if (results.length !== 1) {
      // 数据库中没有这个用户名
      return res.send({
        code: 0,
        msg: '用户名输入错误',
      });
    } else {
      // 数据库中有这个用户名
      // let passOut = getPassword(password);
      // const passOut = getPassword(password);
      // console.log(passOut); //U2FsdGVkX1/zCMN+4wXTHWaNXAicUkTh7FQsXM1z6ro=
      // console.log(results[0].password);
      const passOutIn = setPassword(results[0].password);
      // console.log(passOutIn);
      // if (results[0].password === password) {
      if (passOutIn === password) {
        // 用户名正确  密码也正确

        // 登录验证
        req.session.userinfo = results[0];

        return res.send({
          code: 1,
          msg: '登录成功',
          
        });
      } else {
        return res.send({
          code: 0,
          msg: '密码错误',
        });
      }
    }
    // console.log(results);//[ { username: 'admin', password: '123456' } ]
  });
});
// 退出登录
router.get('/logout', (req, res) => {
  res.redirect('/admin/login/');
});
// 获取注册页面
router.get('/register', (req, res) => {
  res.render('admin/register');
});
// 注册路由
router.post('/register', expressJoi(login_schema), (req, res) => {
  // console.log(req.body);//{ username: 'admin', password: '123456' }
  // 得到前台发来的数据 在req.body中
  // 解构赋值得到从前台传来的用户名和密码
  const { username, password } = req.body;
  // 后台对前台发送来的数据进行校验

  // 查询数据库
  // 定义查询语句
  var sql = 'select username,password from administrator where username=?';
  db.query(sql, [username], (err, results) => {
    if (err) {
      // 数据库查询失败
      return res.send({
        code: 0,
        msg: err.message,
      });
    }
    if (results.length !== 1) {
      // 数据库中没有这个用户名
      // 添加数据库中的用户
      // INSERT INTO administrator (username,password) VALUES ("admin4","123456");
      let passInto = getPassword(password);
      var insetSql = ` INSERT INTO administrator (username,password) VALUES ("${username}","${passInto}")`;
      db.query(insetSql, (err, results) => {
        if (err) {
          // 数据库操作失败
          return res.send({
            code: 0,
            msg: err.message,
          });
        }
        // 影响行数等于1
        if (results.affectedRows === 1) {
          return res.send({
            code: 1,
            msg: '注册成功',
          });
        } else {
          return res.send({
            code: 0,
            msg: '注册失败',
          });
        }
      });
    } else {
      return res.send({
        code: 0,
        msg: '该用户名已存在，请更改用户名',
      });
    }
  });
});

module.exports = router;
